//
//  DataModelable.swift
//  Risac
//
//  Created by remy on 2018/4/29.
//

import SwiftyJSON

public protocol DataModelable {
    init(json: JSON?)
}

public extension DataModelable {
    init() {
        self.init(json: nil)
    }
    
    static func toModel(_ jsonData: JSON) -> Self? {
        guard jsonData.type != .null else { return nil }
        return Self.init(json: jsonData)
    }
    
    static func toModels(_ jsonData: JSON) -> [Self] {
        guard let arr = jsonData.array else { return [] }
        return toModels(arr)
    }
    
    static func toModels(_ jsonData: [JSON]) -> [Self] {
        var models: [Self] = []
        jsonData.forEach {
            guard let model = self.toModel($0) else { return }
            models.append(model)
        }
        return models
    }
}
